// 标准化操作--引入类型常量
import { INCREMENT, DESCREMENT } from './type/mutation-type'

export default {
    //  参数：state 状态对象
    /* msIncrement(state) {
      // console.log(state)
      state.count++
    }, */
    // 加上[]可以将函数名称使用变量来替换
    [INCREMENT](state) {
      // console.log(state)
      state.count++
    },
    [DESCREMENT](state) {
      state.count--
    },
    /***
     * 
     * @param {object} state 状态对象
     * @param {arbitrarily} {object}  可以使任意类型,用于接收在组件中调用commit方法的第二个参数
     * 
    */
    // sum(state,num,str){ //str无法接收到值
    // sum(state,numObj){ //传递两个参数的时候
    sum(state, payload) { //commit另一种风格
      console.log(payload);
      // state.count += numObj.num
      state.count += payload.count
    },
    // 用于添加新用户
    addUser(state, userInfo) {
      state.user.push(userInfo)
    },
    updateInfo(state, payload) {
      // 如果要进行属性操作，要使用响应方法

      // 这种形式可以添加新属性,不是响应式
      // state.info.length = 10
      // console.log(state.info);

      // Vue.set(state.info,'length',10)
      // state.info = {...state.info,length:10}
      // console.log(...state.info);
      // console.log({...state.info});

      // 删除对象中的属性
      // delete state.info.age 

      // Vue.delete(state.info,'name')


      // 模拟异步操作
      // 不要再mutation中异步操作
      /*  setTimeout(()=>{
         state.info.name = '戒哥'
       },1000) */

      // actions中获取得到的数据，就可以在mutation中使用了
      // state.info.name = '戒哥'
      state.info.name = payload.data
    }
  }